﻿using MyVideoManager2.Data;

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Graphics.Display;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using MyVideoManager2.Common;
using MyVideoManager2.DataModel.simple;

// Pour en savoir plus sur le modèle d'élément Page Éléments, consultez la page http://go.microsoft.com/fwlink/?LinkId=234233

namespace MyVideoManager2
{
    /// <summary>
    /// Page affichant une collection d'aperçus d'éléments. Dans le modèle Application fractionnée, cette page
    /// est utilisée pour afficher et sélectionner l'un des groupes disponibles.
    /// </summary>
    public sealed partial class ItemsPage : MyVideoManager2.Common.LayoutAwarePage
    {
        AnalyseFichier analyseFichier;


        public ItemsPage()
        {
            this.InitializeComponent();
            analyseFichier = new AnalyseFichier();
          
        }

        /// <summary>
        /// Remplit la page à l'aide du contenu passé lors de la navigation. Tout état enregistré est également
        /// fourni lorsqu'une page est recréée à partir d'une session antérieure.
        /// </summary>
        /// <param name="navigationParameter">Valeur de paramètre passée à
        /// <see cref="Frame.Navigate(Type, Object)"/> lors de la requête initiale de cette page.
        /// </param>
        /// <param name="pageState">Dictionnaire d'état conservé par cette page durant une session
        /// antérieure. Null lors de la première visite de la page.</param>
        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {
            // TODO: créez un modèle de données approprié pour le domaine posant problème pour remplacer les exemples de données
            //var sampleDataGroups = Data.Data.GetDossiers((String)navigationParameter);
            var sampleDataGroups = Data.Data.AllGroups;
            this.DefaultViewModel["Items"] = sampleDataGroups;
        }

        /// <summary>
        /// Invoqué lorsqu'un utilisateur clique sur un élément.
        /// </summary>
        /// <param name="sender">GridView (ou ListView lorsque l'état d'affichage de l'application est Snapped)
        /// affichant l'élément sur lequel l'utilisateur a cliqué.</param>
        /// <param name="e">Données d'événement décrivant l'élément sur lequel l'utilisateur a cliqué.</param>
        void ItemView_ItemClick(object sender, ItemClickEventArgs e)
        {
            // Accédez à la page de destination souhaitée, puis configurez la nouvelle page
            // en transmettant les informations requises en tant que paramètre de navigation.
            var groupId = ((Dossier)e.ClickedItem).UniqueId;
            this.Frame.Navigate(typeof(SplitPage), groupId);
        }

        private void EditMovie(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
        	// TODO : ajoutez ici l'implémentation du gestionnaire d'événements.
        }

        private async void FileSelecter(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            
        	// TODO : ajoutez ici l'implémentation du gestionnaire d'événements.
            await analyseFichier.afficherFolderPicker();  // on recupere un dossier
            //1) creation du dossier

            if (analyseFichier.nouveauDossier)
            {
                OM_Dossier nouveauDossier = new OM_Dossier(analyseFichier.label, Guid.NewGuid().ToString("N"), analyseFichier.cheminDossier);


                foreach (string titreFilm in analyseFichier.lstTitre)
                {
                    nouveauDossier.lstFilms.Add(new OM_Film(Guid.NewGuid().ToString("N"), titreFilm, analyseFichier.cheminDossier));
                }


                OM_Dossier.lstDossier.Add(nouveauDossier);


                // on transoforme le OM_DOSSIER en DOSSIER
                Dossier monDossier = OM_Dossier.transfert(nouveauDossier);

                // on l'ajoute a la liste
                Data.Data.addDossier(monDossier);


                Data.Data.OM_serialisation();
                //Dossier monDossier = new Dossier();
            }

          

            
             
    
        }

      

        private void RefreshFolder(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
        	// TODO : ajoutez ici l'implémentation du gestionnaire d'événements.
        }
    }
}
